package com.asen.commons.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * 关联属性
 *
 * @author Gary
 * @version 1.0
 * @date 2019-01-11
 */
@Target({FIELD})
@Retention(RUNTIME)
public @interface FieldReference {

    /**
     * 关联属性类
     *
     * @return
     */
    Class<?> value();

    /**
     * 生成关联属性，默认取name，默认生成的属性名称为xxxName
     * 1) 多个属性以“,”分隔；
     * 2) 通过“:”可以指定关联属性名称
     *
     * @return
     */
    String attrs() default "name";

    /**
     * 表示本次注解仅用于标识属性类型，不生成关联属性
     *
     * @return
     */
    boolean typeOnly() default false;
}
